package com.shengzai

/**
 * 功能叠加:
 *    如果对数据库进行操作， 第一步需要创建连接  第二步 查询数据
 *
 */
object Code32Trait {
  def main(args: Array[String]): Unit = {
    val mysqlDB = new MysqlDB2()

    // 通过 extends 形式添加trait,之后再通过with追加trait
    mysqlDB.Operator()
  }
}



trait getConnection2{

  def Operator(): Unit = {
    println("正在创建连接")
  }
}


// 由于执行SQL时，需要先获取连接
trait ExecutorSQL2 extends getConnection2{

  override def Operator(): Unit = {
    super.Operator()
    println("正在查询数据")
  }
}


trait GetLog extends getConnection2{

  override def Operator(): Unit = {
    super.Operator()
    println("正在获取日志信息...")
  }
}




//  当类需要执行SQL时，可以直接继承执行SQL的trait即可
//     而 ExecutorSQL2中已经继承了 getConnection2 中的Operator函数 并且做了重写操作，在函数中
//     对父trait中的函数进行了调用
class MysqlDB2 extends GetLog {

}

